const { staticUrl } = require('../../utils/config');
const { loginWx } = require('../../services/user/auth');

Page({
  data: {
    countdown: 7, // 自动跳转前的倒计时秒数
    showPhoneDialog: false, // 显示手机号授权对话框
    openId: '', 
    nickname: '', // 用户昵称
    phone: '', // 用户手机号
    userRole: '', // 用户角色
    inviteCode: '', // 邀请码
    isScanned: false, // 是否为扫二维码打开
    buttonState: {
      becomeOwner: {
        image: '/assets/images/btn_inwelcome_n.png',
        textColor: '#aa623b',
      },
      replenishStock: {
        image: '/assets/images/btn_inwelcome_n.png',
        textColor: '#aa623b',
      },
      joinMember: {
        image: '/assets/images/btn_inwelcome_n.png',
        textColor: '#aa623b',
      },
    },
  },

  onLoad(options) {
    this.setData({
      isScanned: false,
    });
    
    let backgroundUrl = `${staticUrl}/assets/images/welcome.jpg`;
    const systemInfo = wx.getSystemSetting();
    wx.removeStorageSync('scannedCabinetUserId')

    // 检查 URL 是否包含 userId 参数
    // options = {
    //   userId: 27,
    // };

    if (options.scene) {
      const decodedScene = decodeURIComponent(options.scene);  // 解码参数
      const userId = decodedScene.split('=')[1]; // 提取 userId 的值
      if (userId) {
        wx.setStorageSync('scannedCabinetUserId', userId);
        this.setData({
          isScanned: true,
        });
        console.log('UserId from QR Code:', options.userId); // 调试输出
      }
    }
    
    this.setData({
      screenWidth: systemInfo.screenWidth,
      screenHeight: systemInfo.screenHeight,
      backgroundUrl,
    });
  },

  onShow() {
    this.handleLogin();
  },
  
  // 监听邀请码输入框
  onInviteCodeInput(e) {
    this.setData({ inviteCode: e.detail.value });
  },

  // 登录逻辑
  async handleLogin() {
    const scannedUserId = wx.getStorageSync('scannedCabinetUserId');
    try {
      // 获取微信登录 code
      const loginRes = await wx.login();
      const code = loginRes.code;

      if (!code) {
        throw new Error('获取微信登录 code 失败');
      }

      // 调用后端登录接口
      const { user } = await loginWx({
        code,
        nickname: this.data.nickname, // 初次登录昵称为空
        phone: this.data.phone, // 初次登录手机号为空
      });

      // 保存用户角色
      this.setData({ userRole: user.role });

      // 检查是否有扫描到的 userId
      if (scannedUserId) {
        // 如果有 scannedUserId，则跳转到红酒列表
        wx.switchTab({ url: '/pages/goods/list/index' });
      } else {
        // 判断用户身份
        if (user.role && user.role !== 'GUEST') {
          // 如果不是 GUEST，跳转到首页
          this.clearCountdown();
          wx.switchTab({
            url: '/pages/home/home',
          });
        } else {
          // 如果是 GUEST，停留在欢迎页
          this.startCountdown('/pages/home/home');
        }
      }
    } catch (err) {
      console.error('登录失败:', err);
      wx.showToast({
        title: '登录失败，请重试',
        icon: 'none',
      });
    }
  },

  // 获取微信用户信息
  getUserProfile() {
    return new Promise((resolve, reject) => {
      wx.getUserProfile({
        desc: '用于完善VIP会员资料',
        success: (res) => resolve(res.userInfo),
        fail: (err) => {
          console.error('获取用户信息失败:', err);
          reject(err);
        },
      });
    });
  },

  // 启动倒计时
  startCountdown(url) {
    const interval = setInterval(() => {
      if (this.data.countdown === 0) {
        this.clearCountdown();
        wx.switchTab({ url: url }); // 自动跳转到首页
      } else {
        this.setData({ countdown: this.data.countdown - 1 });
      }
    }, 1000);
    
    // 保存定时器实例到 data 中，方便后续清除
    this.setData({ timer: interval });
  },

  // 暂停倒计时
  pauseCountdown() {
    if (this.data.timer) {
      clearInterval(this.data.timer); // 清理定时器
      this.setData({ timer: null });
      console.log('倒计时已暂停');
    } else {
      console.warn('无有效定时器可清理');
    }
  },

  // 继续倒计时
  resumeCountdown() {
    this.startCountdown();
  },

  // 清理倒计时
  clearCountdown() {
    if (this.data.timer) {
      clearInterval(this.data.timer); // 清除定时器
      this.setData({ timer: null });
    }
  },

  // 按钮按下事件（触摸开始）
  onTouchStart(e) {
    const { index } = e.currentTarget.dataset;
    const updatedState = { ...this.data.buttonState };
    updatedState[index].image = '/assets/images/btn_inwelcome_s.png'; // 切换为按下图片
    updatedState[index].textColor = 'white'; // 按下时文字变为白色
    this.setData({ buttonState: updatedState });

    // 放大动画
    const query = wx.createSelectorQuery();
    query.select(`.${index}`).boundingClientRect();
    query.selectViewport().scrollOffset();
    query.exec((res) => {
      const element = res[0];
      if (element) {
        element.style.transform = 'scale(1.1)'; // 放大效果
      }
    });
  },

  // 按钮松开事件（触摸结束）
  onTouchEnd(e) {
    const { index } = e.currentTarget.dataset;
    const updatedState = { ...this.data.buttonState };
    updatedState[index].image = '/assets/images/btn_inwelcome_n.png'; // 恢复默认图片
    updatedState[index].textColor = '#aa623b'; // 恢复默认文字颜色
    this.setData({ buttonState: updatedState });
  },

  // 跳过按钮
  onSkip() {
    this.clearCountdown();
    wx.switchTab({ url: '/pages/home/home' });
  },

  // 按钮交互逻辑
  async onBecomeOwner() {
    // 暂停倒计时
    await this.pauseCountdown();
    wx.navigateTo({ url: '/pages/usercenter/cabinetapply/cabinetapply' });
  },

  onReplenishStock() {
    wx.navigateTo({ url: '/pages/goods-list/goods-list' });
  },

  async onJoinMember() {
    // const userProfile = await this.getUserProfile();
    // const nickname = userProfile.nickName;

    // 暂停倒计时
    await this.pauseCountdown();
    // this.setData({
    //   nickname: nickname,
    // });

    wx.navigateTo({ url: `/pages/usercenter/memberapply/memberapply` });
  },

});
